
// 获取应用实例
const app = getApp()

Page({
  data: {
    mapCtx: null,
    markers: [],
    userLocation: null,
    range: 1,
    locationReady: false,
    isLoggedIn: false,
    isLoading: true,
    loadError: null,
    loadingText: '正在初始化...',
    userInfo: null,
    userAvatar: '',
    userMessage: ''
  },

  onLoad() {
    // 确保方法存在
    if (typeof this.checkNetwork !== 'function') {
      console.error('checkNetwork方法未定义')
      this.checkNetwork = this._checkNetwork.bind(this)
    }

    // 初始化地图上下文
    this.setData({
      mapCtx: wx.createMapContext('map'),
      range: app.globalData.settings.range,
      isLoading: true,
      loadingText: '正在初始化...'
    })

    // 设置加载超时（15秒）
    this.loadingTimer = setTimeout(() => {
      this.setData({
        isLoading: false,
        loadError: '加载超时，请检查网络'
      })
    }, 15000)

    // 监听事件
    app.on('locationReady', this.handleLocationReady.bind(this))
    app.on('loginFail', this.handleLoginFail.bind(this))

    // 启动加载流程
    this.startLoading()
  },

  // 网络检查方法
  _checkNetwork(callback) {
    console.log('执行网络检查')
    wx.getNetworkType({
      success: res => {
        console.log('网络类型:', res.networkType)
        if (res.networkType === 'none') {
          this.setData({
            isLoading: false,
            loadError: '网络不可用，请检查网络连接'
          })
        } else if (typeof callback === 'function') {
          callback()
        }
      },
      fail: err => {
        console.error('网络检测失败:', err)
        this.setData({
          isLoading: false,
          loadError: '网络状态检测失败'
        })
      }
    })
  },

  // 别名方法确保兼容
  checkNetwork(callback) {
    this._checkNetwork(callback)
  },

  // 位置就绪处理
  handleLocationReady() {
    console.log('位置获取成功', app.globalData.location)
    clearTimeout(this.loadingTimer)
    
    // 检查登录状态
    const userInfo = app.globalData.userInfo || wx.getStorageSync('userInfo')
    const userAvatar = userInfo?.avatarUrl || userInfo?.avatar || ''
    const message = app.globalData.settings?.message || '老乡见老乡，两眼泪汪汪！'
    
    this.setData({
      userLocation: app.globalData.location,
      locationReady: true,
      isLoading: false,
      isLoggedIn: !!userInfo,
      userInfo: userInfo,
      userAvatar: userAvatar,
      userMessage: message,
      range: app.globalData.settings?.range || 1
    })
    
    // 获取附近用户
    this.getNearbyUsers()
  },

  // 登录失败处理
  handleLoginFail(message) {
    console.error('登录失败:', message)
    clearTimeout(this.loadingTimer)
    this.setData({
      isLoading: false,
      loadError: message
    })
    wx.showToast({
      title: message,
      icon: 'none'
    })
  },

  // 启动加载流程
  startLoading() {
    this.setData({ loadingText: '正在检查网络...' })
    this.checkNetwork(() => {
      this.setData({ loadingText: '正在获取位置...' })
      // 如果位置还未获取，等待位置就绪事件
      if (app.globalData.location) {
        this.handleLocationReady()
      } else {
        // 触发位置获取
        app.getLocation()
      }
    })
  },

  // 获取附近用户
  getNearbyUsers() {
    if (!this.data.locationReady) return
    
    // TODO: 调用后端API获取附近用户数据
    // 模拟数据
    const mockUsers = [
      {
        id: 1,
        latitude: this.data.userLocation.latitude + 0.001,
        longitude: this.data.userLocation.longitude + 0.001,
        iconPath: '/assets/images/avatar1.png',
        width: 40,
        height: 40,
        callout: {
          content: '附近的老乡',
          color: '#333',
          borderRadius: 4,
          padding: 8,
          display: 'ALWAYS'
        }
      }
    ]
    this.setData({ markers: mockUsers })
  },

  // 点击用户标记
  onMarkerTap(e) {
    const { markerId } = e.detail
    const user = this.data.markers.find(m => m.id === markerId)
    
    // 跳转到添加好友页面
    wx.navigateTo({
      url: `/pages/add-friend/add-friend?id=${markerId}`,
      success: () => {
        // 传递用户信息
        app.globalData.targetUser = user
      }
    })
  },

  // 重新加载
  reloadPage() {
    this.setData({
      isLoading: true,
      loadError: null,
      loadingText: '正在重新加载...'
    })
    this.startLoading()
  },

  // 跳转到设置页面
  goToSettings() {
    wx.navigateTo({
      url: '/pages/settings/settings'
    })
  },

  onUnload() {
    // 清理定时器
    if (this.loadingTimer) {
      clearTimeout(this.loadingTimer)
    }
  }
})